package interview.stackQueue;

import java.util.Stack;

/**
 * 使用栈实现一个队列
 */
public class StackQueue {

    private Stack<Integer> A = new Stack<>();
    private Stack<Integer> B = new Stack<>();

    /**
     * @param element 入队元素
     * 入队操作
     */
    public void inQueue(int element){
        A.push(element);
    }

    /**
     * 出队操作
     * @return 返回出队元素
     */
    public Integer outQueue(){
        //判断B栈是否为空 如果为空先将A栈的元素弹出压入B栈
        if (B.empty()){
            if (A.empty()) return null;
            transfer();
        }
        return B.pop();
    }

    /**
     * A栈元素转移到B栈
     */
    private void transfer() {
        while (!A.empty()){
            B.push(A.pop());
        }
    }
}
